package com.szosen.measurement;

import com.szosen.util.StringUtils;

import java.util.ArrayList;

public class OneECG {
	public byte[] head = new byte[2];
	public byte[] dataCount = new byte[2];
	public byte[] xinlv = new byte[2];
	public byte[] caiyanglv = new byte[2];
	/**
	 * 2 个字节，当时的导联数据状况,高位在前，低位在后，16 位无符号数，其中：数第 15 位 D15 如
	 * 1，应提示数据错误，同时发送“快稳定心电信号”命令。D14 如为 1 提示 导联脱落并在后面加上提示哪个导联脱落， ，提示重新接导联线。
	 * 导联脱落关系如下 D0:F D1:R D2:L D3:C1 D4:C2 D5:C3 D6:C4 D7:C5 D8:C6
	 */
	public byte[] daolian = new byte[2];
	public byte[] end = new byte[2];
	public byte[] allEcgBytes;
	public ArrayList<byte[]> ecgDatas = new ArrayList<byte[]>();

	public OneECG(byte[] data) {
		int length = data.length;
		int index = 0;
		System.arraycopy(data, index, head, 0, head.length);
		index += head.length;
		System.arraycopy(data, index, dataCount, 0, dataCount.length);
		index += dataCount.length;
		System.arraycopy(data, index, xinlv, 0, xinlv.length);
		index += xinlv.length;
		System.arraycopy(data, index, caiyanglv, 0, caiyanglv.length);
		index += caiyanglv.length;
		int count = (length - 12) / 12;
		count = 200;
		int caiyang = StringUtils.byte2intUnsigned(caiyanglv[0], caiyanglv[1]);
		allEcgBytes = new byte[count * 12];
		System.arraycopy(data, 10, allEcgBytes, 0, allEcgBytes.length);
		// 心电复制的位置。用于复制字节数组的角标标记。
		int copyIndex = 0;
		// 每一道心电的数组长度是多少？
		end[0] = data[data.length - 2];
		end[1] = data[data.length - 1];
		/*
		 * System.out.println("OneECG里面的数据数量是：" +
		 * StringUtils.byte2intUnsigned(dataCount[0], dataCount[1]));
		 * System.out.println("OneECG里面的数据心率是：" +
		 * StringUtils.byte2intUnsigned(xinlv[0], xinlv[1]));
		 * System.out.println("OneECG里面的数据采样率是：" +
		 * StringUtils.byte2intUnsigned(caiyanglv[0], caiyanglv[1]));
		 * System.out.println("OneECG里面的数据end是：" +
		 * StringUtils.ByteArrToHex(end)); System.out.println("OneECG里面的数据总长度是："
		 * + data.length); System.out.println("OneECG里面的count是"+count);
		 */
		for (int i = 0; i < 12; i++) {
			// 每道心电的字节数组
			byte[] temp = new byte[count];
			System.arraycopy(allEcgBytes, count * i, temp, 0, count);
			// copyIndex+=count;
			// 把心电数据添加到字节数组集合中
			ecgDatas.add(temp);
		}
		// System.arraycopy(data, data.length-2, end, 0, 2);
	}

	/***
	 * 获取实时的心率显示。
	 *
	 * @return
	 */
	public int getXinlv() {
		return StringUtils.byte2intUnsigned(xinlv[0], xinlv[1]);
	}

	public ArrayList<int[]> getECG12() {
		ArrayList<int[]> result = new ArrayList<>();
		for (int i = 0; i < ecgDatas.size(); i++) {
			byte[] temp = ecgDatas.get(i);
			int[] data = StringUtils.ByteArray2IntArrayDiQianGaoHou(temp);
			// 切掉最后一点和第一点的int数组
			int[] splitInts = new int[data.length - 1];
//			System.arraycopy(data, 1, splitInts, 0, data.length - 1);
			System.arraycopy(data, 1, splitInts, 0, data.length - 1);
			result.add(splitInts);
			// FileSaveUtil.saveTxtFile("奥生心电", "实时心导心率" + i,
			// Arrays.toString(data));
		}
		return result;
	}
}
